package cn.yunyichina.provider.pay.alipay.utils;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

/**
 * alipay Excel 解析工具类
 * Created by JoeZ on 2016/10/12.
 */
public class AlipayCSVFileUtil {
    private InputStreamReader fr = null;
    private BufferedReader br = null;

    public AlipayCSVFileUtil(String f) throws IOException {
        fr = new InputStreamReader(new FileInputStream(f), "GBK");
    }

    /**
     * 支付宝账单解析。解析csv文件 到一个list中 每个单元个为一个String类型记录，每一行为一个list。 再将所有的行放到一个总list中
     */
    public List<List<String>> alipayReadCSVFile() throws IOException {
        br = new BufferedReader(fr);
        String rec = null;// 一行
        String str;// 一个单元格
        List<List<String>> listFile = new ArrayList<List<String>>();
        try {
            int count = 0;
            // 读取一行
            while ((rec = br.readLine()) != null) {
                List<String> cells = new ArrayList<String>();// 每行记录一个list
                String[] split = rec.split("\\,");

                for (int i = 0; i < split.length; i++) {
                    // 读取每个单元格
                    cells.add(new String(split[i].trim().toString().getBytes("UTF-8")));
                }

                //去除非账单条目逻辑
                if(count >= 5 && count != 3){
                    if(rec.contains("-------")){
                        break;
                    }
                    listFile.add(cells);
                }

                count ++;
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (fr != null) {
                fr.close();
            }
            if (br != null) {
                br.close();
            }
        }
        return listFile;
    }

}
